var AlarmIndex = function () {
    return {
        //初始化表格
        initTable: function () {
            $('.dataTable').bootstrapTable({
                url: ctx + '/equipment/alarm/definition/list/get.mvc',         //请求后台的URL（*）
                method: 'get',                      //请求方式（*）
                striped: true,                      //是否显示行间隔色
                cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
                pagination: true,                   //是否显示分页（*）
                paginationLoop: false,
                sortable: true,                     //是否启用排序
                sortOrder: "asc",                   //排序方式
                queryParams: AlarmIndex.queryParams,//传递参数（*）
                sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
                pageNumber: 1,                       //初始化加载第一页，默认第一页
                pageSize: 10,                       //每页的记录行数（*）
                pageList: [10, 25, 50, 100],        //可供选择的每页的行数（*）
                search: false,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
                strictSearch: true,
                showColumns: false,                  //是否显示所有的列
                showRefresh: false,                  //是否显示刷新按钮
                minimumCountColumns: 2,             //最少允许的列数
                clickToSelect: true,                //是否启用点击选中行
                height: 500,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
                uniqueId: "pkId",                     //每一行的唯一标识，一般为主键列
                showToggle: false,                    //是否显示详细视图和列表视图的切换按钮
                cardView: false,                    //是否显示详细视图
                detailView: false,                   //是否显示父子表
                singleSelect: false,                    //禁止多选
                checkboxHeader: true,                 //列头取消多选


                columns: [
                    {
                        checkbox: true,
                        align: 'center',
                        valign: 'middle'
                    },
                    {
                        title: '序号',
                        align: 'center',
                        valign: 'middle',
                        formatter: function (value, row, index) {
                            var options = $('.dataTable').bootstrapTable('getOptions');
                            return options.pageSize * (options.pageNumber - 1) + index + 1;
                        }
                    },
                    {
                        field: 'modelCode',
                        title: '设备型号',
                        sortable: false,
                        align: 'center',
                        valign: 'middle'

                    }, {
                        field: 'eqCode',
                        title: '设备编号',
                        sortable: false,
                        align: 'center',
                        valign: 'middle'
                    }, {
                        field: 'eqName',
                        title: '设备名称',
                        sortable: false,
                        align: 'center',
                        valign: 'middle'
                    }, {
                        field: 'paramName',
                        title: '预警参数名称',
                        sortable: false,
                        align: 'center',
                        valign: 'middle'

                    }, {
                        field: 'paramUnit',
                        title: '预警参数单位',
                        sortable: false,
                        align: 'center',
                        valign: 'middle'
                    }, {
                        field: 'paramStandard',
                        title: '参数标准数据',
                        sortable: false,
                        align: 'center',
                        valign: 'middle'
                    }, {
                        field: 'paramRange',
                        title: '参数预警范围',
                        sortable: false,
                        align: 'center',
                        valign: 'middle',
                        formatter: function (value, row, index) {
                            return "大于" + row.minimaValue + ",小于" + row.maximaValue;
                        }
                    }, {
                        field: 'paramPromptName',
                        title: '预警提示名称',
                        sortable: false,
                        align: 'center',
                        valign: 'middle'
                    }, {
                        field: 'date',
                        title: '定义修改时间',
                        sortable: false,
                        align: 'center',
                        valign: 'middle',
                        formatter: function (value, row, index) {
                            if (value) {
                                return new Date(value).format('yyyy-MM-dd hh:mm:ss');
                            } else {
                                return ''
                            }
                        }
                    },{
                        field: 'pkId',
                        title: 'pkId',
                        visible: false
                    }]

            });
        },
        queryParams: function (params) {
            var temp = {   // 这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
                size: params.limit,   // 页面大小
                num: (params.offset / params.limit) + 1,  // 页码
                sort: params.sort,
                order: params.order,
                eqCode: $(".eqCode").val(),
                equipName: $(".eqName").val()

            };
            return temp;
        },

        //点击下拉框--设备型号信息
        getEmModel: function (modelId) {

            $.ajax({
                url: ctx + '/equipment/type/listAllModel/get.mvc',
                type: "post",
                dataType: 'json',
                data: '',
                success: function (data) {
                    $("#myModal .modelCode option").remove();
                    $("#myModal .modelCode").append('<option value="">请选择</option>');
                    for (var i = 0; i < data.length; i++) {
                        var option = "<option value='" + data[i].modelCode + "' ";
                        if (data[i].pkId === modelId) {
                            option += " selected = 'selected' ";
                        }
                        option += ">" + data[i].modelCode + "</option>";
                        $("#myModal .modelCode").append(option);
                    }


                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    console.log(data);
                    alert("系统错误");
                }
            });
        },
        /**
         * 根据设备类别查找设备
         */
        getEquipment: function (modelCode, eqCode) {
            if ("" === modelCode) {
                return false;
            }
            $.ajax({
                url: ctx + '/equipment/register/listAllEquipmentByModelCode/get.mvc',
                type: 'post',
                dataType: 'json',
                data: {modelCode: modelCode},
                success: function (data) {
                    debugger
                    $("#myModal .eqCode option").remove();
                    $("#myModal .eqCode").append('<option value="">请选择</option>');

                    for (var i = 0; i < data.data.length; i++) {

                        var option = "<option value='" + data.data[i].equipCode + "'  data-name='" + data.data[i].equipName + "' ";
                        if (data.data[i].equipCode == eqCode) {
                            option += " selected = 'selected' ";
                            $("#myModal .eqName").val(data.data[i].equipName);
                        }
                        option += ">" + data.data[i].equipCode + "</option>";
                        $("#myModal .eqCode").append(option);
                    }
                }
            });

        },

        /**
         * 根据设备类别查找参数
         */
        getParam: function (modelCode, paramName) {
            if ("" === modelCode) {
                return false;
            }

            $.ajax({
                url: ctx + '/equipment/param/listModelParamsByModelCode/get.mvc',
                type: 'post',
                dataType: 'json',
                data: {modelCode: modelCode},
                success: function (data) {
                    $("#myModal .paramName option").remove();
                    $("#myModal .paramName").append('<option value="">请选择</option>');
                    for (var i = 0; i < data.length; i++) {

                        var option = "<option value='" + data[i].pkId + "'  data-range='" + data[i].processRange + "' ";
                        if (data[i].paramName == paramName) {
                            option += " selected = 'selected' ";
                            $("#myModal .paramUnit").val(data[i].processRange);

                        }
                        ;
                        option += ">" + data[i].paramName + "</option>";
                        $("#myModal .paramName").append(option);
                    }
                    ;
                }
            });

        },
        /**
         * 清空模态框
         */
        clear: function () {

            $("#myModal").on("hidden.bs.modal", function (e) {
//				
                /*$(".modelCode").focus();*/

                $(".errorDiv").hide();

                $('#myModal input').each(function () {
                    if ($(this).val() != "" || $(this).prop('checked') == true) {
                        $(this).val("").prop('checked', false);
                    }
                });
                $('#myModal select').each(function () {
                    $(this).empty();
                    $(this).append('<option value="">请选择</option>');
                });

                $('.addForm').data('bootstrapValidator').destroy();
                AlarmIndex.validatorForm();

            });
            $("#myModal").on("hide.bs.modal", function (e) {

                $(".content-box-2").scrollTop(0);
            });


        },

        //校验表单
        validatorForm: function () {
            $(".addForm").bootstrapValidator({
                message: 'This value is not valid',
                live: 'submitted',
                fields: {
                    equipCode: {
                        message: '设备编号无效',
                        validators: {

                            callback: {
                                message: '必须选择一个',
                                callback: function (value, validator) {
                                    if (value == "") {
                                        return false;
                                    } else {
                                        return true;
                                    }
                                }
                            }

                        }
                    },
                    modelCode: {
                        message: '设备型号无效',
                        validators: {

                            callback: {
                                message: '必须选择一个',
                                callback: function (value, validator) {
                                    if (value == "") {
                                        return false;
                                    } else {
                                        return true;
                                    }
                                }
                            }

                        }
                    },
                    paramId: {
                        message: '预警参数无效',
                        validators: {

                            callback: {
                                message: '必须选择一个',
                                callback: function (value, validator) {
                                    if (value == "") {
                                        return false;
                                    } else {
                                        return true;
                                    }
                                }
                            }
                        }
                    },
                    standardValue: {
                        message: '参数标准数据无效',
                        validators: {
                            stringLength: {
                                min: 0,
                                max: 20,
                                message: '参数标准数据长度不能超过20个字符'
                            },
                            notEmpty: {
                                message: '参数标准数据不能为空'
                            },
                            numeric: {
                                message: '只能输入数字'
                            },
                            regexp: {
                                regexp: /^\d+(\.\d{0,2})?$|^[a-zA-Z]?$|^[^a-zA-Z\d]{0,}$/,
                                message: '参数标准数据不能是负数，最多支持2位小数'
                            }

                        }
                    },
                    /*maximaValue: {
                        message: '预警参数范围无效',
                        validators: {
                            stringLength: {
                                min: 0,
                                max: 20,
                                message: '预警参数范围长度不能超过20个字符'
                            },
                            notEmpty: {
                                message: '不能为空'
                            },
                            numeric: {message: '只能输入数字'},
                            callback : {
                                message : '最大值小于最小值',
                                callback : function(value, validator, $field){
                                    var min = validator.getFieldElements('minimaValue').val();//获得另一个的值
                                    if(value>min){

                                    }else{
                                        return false;
                                    }

                                    return true;

                                }
                            }

                        }
                    },
                    minimaValue: {
                        message: '预警参数范围无效',
                        validators: {
                            stringLength: {
                                min: 0,
                                max: 20,
                                message: '预警参数范围长度不能超过20个字符'
                            },
                            notEmpty: {
                                message: '不能为空'
                            },
                            numeric: {message: '只能输入数字'},
                            callback : {
                                message : '最小值大于最大值',
                                callback : function(value, validator, $field){
                                    if(value ==""){
                                        return true;
                                    }
                                    var max = validator.getFieldElements('maximaValue').val();//获得另一个的值
                                    if(value>max){
                                        return false;
                                    }else{
                                        return true;
                                    }
                                }
                            }
                        }
                    },*/
                    promptName: {
                        message: '预警提示名称',
                        validators: {
                            stringLength: {
                                min: 0,
                                max: 20,
                                message: '预警提示名称长度不能超过20个字符'
                            },
                            notEmpty: {
                                message: '预警提示名称不能为空'
                            },
                        }
                    }


                }
            });

        },
        /**
         * 查询
         */
        query: function () {
            $(".time-set .search").on("click", function () {

                $('.dataTable').bootstrapTable("refresh");
            });

            $(".time-set .eqName").keypress(function (e) {
                if (e.which == 13) {
                    $(".time-set .search").trigger("click");
                }
            });

        },

        reset: function () {
            $(".reset").on("click", function () {
                $(".eqName").val("");
                $(".queryEquipment").empty();
            });
        }


    };
}();

var AlarmUtil = function () {
    return {
        init: function () {
            AlarmUtil.add();
            AlarmUtil.update();
            AlarmUtil.deleteDefinition();
            AlarmUtil.refresh();
            AlarmUtil.modelChange();
            AlarmUtil.eqCodeChange();
            AlarmUtil.paramNameChange();
        },
        //增
        add: function () {
            $(".crud .add").on("click", function () {
                $("#myModal .title").html("新增");

                $("#myModal").modal();
                AlarmIndex.getEmModel();
                $("#myModal .yes").attr("disabled", false);
            });

            $("#myModal .yes").on("click", "", function () {

                $(".errorDiv").hide();
                $(".addForm").data("bootstrapValidator").validate();
                var flag = $(".addForm").data("bootstrapValidator").isValid();

                //单独校验最大值最小值
                var max = $(".addForm .maximaValue").val();
                var min = $(".addForm .minimaValue").val();

                //是否为数字
                if (max === "" || min === "") {
                    $(".errorDiv").html("预警参数范围不能为空");
                    $(".errorDiv").show();
                    return false;
                }

                if (isNaN(max) || isNaN(max)) {
                    $(".errorDiv").html("请输入数字");
                    $(".errorDiv").show();
                    return false;
                }

                max = Number(max);
                min = Number(min);

                if (max <= min) {
                    $(".errorDiv").html("最大值必须大于最小值");
                    $(".errorDiv").show();
                    return false;
                }
                if (!flag) {
                    //未通过验证
                    return false;
                }
                ;
                $(".errorDiv").hide();
                $("#myModal .yes").attr("disabled", true);


                //提交新增
                $.ajax({
                    url: ctx + '/equipment/alarm/addOrUpdateDefinition/add.mvc',
                    type: "post",
                    dataType: 'json',
                    data: $(".addForm").serialize(),
                    success: function (response) {
                        //取消
                        $('#myModal').modal('hide');
                        if (response.result == true) {
                            DialogUtil.success("保存成功");
                            $('.dataTable').bootstrapTable('refresh');
                        } else {
                            $("#myModal .yes").attr("disabled", false);
                            DialogUtil.error(response.message);
                            return false;
                        }


                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        DialogUtil.error("系统错误");
                    }
                });
                $("#myModal .yes").attr("disabled", true);
            });
        },
        modelChange: function () {
            $("#myModal").on("change", ".modelCode", function (equipCode) {
                console.log(equipCode);
                AlarmIndex.getEquipment($(this).val());
                AlarmIndex.getParam($(this).val());
            });
        },
        eqCodeChange: function () {
            $("#myModal").on("change", ".eqCode", function (option) {
                var name = $("#myModal .eqCode").find("option:selected").data("name");
                $("#myModal .eqName").val(name);
            });
        },
        paramNameChange: function () {
            $("#myModal").on("change", ".paramName", function () {
                var name = $("#myModal .paramName").find("option:selected").data("range");
                $("#myModal .paramUnit").val(name);
            });
        },

        //删
        deleteDefinition: function () {
            $(".crud .delete").on("click", function () {
                var ids = $.map($('.dataTable').bootstrapTable('getSelections'), function (row) {
                    return row.pkId;
                });
                if (ids.length < 1) {
                    DialogUtil.warning("请选择记录");
                    return;
                }
                var index = 0;
                DialogUtil.ok_and_cancel("是否删除预警定义？", function () {
                    $('.btn-primary.sure').attr("disabled", true);
                    $.ajax({
                        url: ctx + '/equipment/alarm/delDefinition/del.mvc',
                        type: "post",
                        dataType: 'json',
                        data: {
                            pkIds: JSON.stringify(ids)
                        },
                        success: function (response) {
                            console.log(response);
                            if (response.result == true) {
                                $('.btn-primary.sure').attr("disabled", false);
                                DialogUtil.warning("删除成功");
                                $('.dataTable').bootstrapTable('refresh');
                                return true;
                            }
                            if (response.result == false) {
                                $('.btn-primary.sure').attr("disabled", false);
                                DialogUtil.warning("删除失败");
                                return false;
                            }

                        },
                        error: function (XMLHttpRequest, textStatus, errorThrown) {
                            DialogUtil.warning("系统错误");
                        }
                    });
                }, function () {
                });
            });
        },

        //改
        update: function () {
            $(".crud .update").on("click", function () {
                $("#myModal .yes").attr("disabled", false);
                var selections = $('.dataTable').bootstrapTable('getSelections')
                if (selections.length != 1) {
                    DialogUtil.warning("请选择一行修改");
                    return;
                }
                $("#myModal .title").html("修改");
                $("#myModal").modal();
                AlarmIndex.getEmModel(selections[0].modelId);
                AlarmIndex.getEquipment(selections[0].modelCode, selections[0].eqCode);
                AlarmIndex.getParam(selections[0].modelCode, selections[0].paramName);
                //标准数据
                $("#myModal .paramStandard").val(selections[0].paramStandard);
                $("#myModal .maximaValue").val(selections[0].maximaValue);
                $("#myModal .minimaValue").val(selections[0].minimaValue);
                $("#myModal .promptName").val(selections[0].paramPromptName);
                $("#myModal .paramUnit").val(selections[0].paramUnit);
                debugger
                $("#myModal .pkId").val(selections[0].pkId);
                $("#myModal .yes").attr("disabled", false);
            });
        },
        //刷新

        refresh: function () {
            $(".crud .refresh").on("click", function () {
                $('.dataTable').bootstrapTable('refresh');
            })
        }


    };
}();


jQuery(document).ready(function () {

    SystemCommon.getQueryEquipCode();

    //1.初始化Table
    AlarmIndex.initTable();
    AlarmIndex.validatorForm();
    AlarmIndex.clear();
    AlarmIndex.query();
    AlarmIndex.reset();


    AlarmUtil.init();


});